// 专门用来存储user信息 pinia 当做前端的缓存
import { defineStore } from 'pinia'   // 导入 defineStore

export const useUserStore = defineStore('user', {

    state: () => ({
        loginInfo: {} // {  user: {}, token: '' } 表示user对象
    }),
    getters: {
        getUserId() {
            return this.loginInfo.user ? this.loginInfo.user.id : 0
        },
        getUser() {
            return this.loginInfo.user || {}
        },
        getBearerToken() {
            return this.loginInfo.token ? 'Bearer ' + this.loginInfo.token : ''
        },
        getToken() {
            return this.loginInfo.token || ""
        }
    },
    actions: {
        setLoginInfo(loginInfo) {
            this.loginInfo =  loginInfo
        },
        setUser(user) {
            // this.loginInfo.user = user
            // 会把缓存中的loginInfo对象改掉，但对象是引用类型，前台修改时修改的是对象中的一个属性，后序还会用到这个属性
            // 再次修改时不点保存，右上角也会跟这边
            this.loginInfo.user = JSON.parse(JSON.stringify(user))
        }
    },
    // 开启数据持久化
    persist: true
})
